/*
 * @lc app=leetcode.cn id=594 lang=cpp
 *
 * [594] 最长和谐子序列
 */

// @lc code=start
#include <bits/stdc++.h>
using namespace std;
class Solution
{
public:
    int findLHS(vector<int> &nums)
    {
        map<int, int> m;
        for (auto n : nums)
            m[n]++;
        int ans = 0;
        for (auto &p : m)
        {
            auto it = m.end();
            if ((it = m.find(p.first + 1)) != m.end())
            {
                ans = std::max(ans, it->second + p.second);
            }
            if ((it = m.find(p.first - 1)) != m.end())
            {
                ans = std::max(ans, it->second + p.second);
            }
        }
        return ans;
    }
};
// @lc code=end
